Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
Deno: ¿"Los trabajadores clásicos no son compatibles"?

Quería crear un Web Worker así:

 const blob = URL.createObjectURL(new Blob([` ... `], {type: 'text/javascript'})) const worker = new Worker(blob)

Pero al hacerlo en Deno obtengo:

 error: Uncaught NotSupported: Classic workers are not supported. const worker = new Worker(blob) ^

Busqué en Google este mensaje "Los trabajadores clásicos no son compatibles" y básicamente no encontré nada que explique la historia detrás de él o qué significa específicamente. Encontré un poco sobre una forma especial de Deno de crear trabajadores:

 const worker = new Worker(new URL("worker.js", import.meta.url).href, { type: "module", deno: true, }); worker.postMessage({ filename: "./log.txt" });

pero no parece satisfacer mis necesidades porque específicamente necesito inicializar un trabajador dinámicamente desde una cadena (o al menos desde una función arbitraria pasada en tiempo de ejecución).

¿Hay alguna forma de hacer lo que necesito hacer en Deno?

Editar: logré encontrar esta página en los documentos (los documentos de Deno tienen problemas para mostrar resultados en los motores de búsqueda, por alguna razón), aunque no es un buen augurio porque parece que no hay manera de hacer lo que necesito para hacer https://deno.land/manual/runtime/web_platform_apis#web-worker-api

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Actualmente, Deno no admite trabajadores "clásicos".

  1. Desde Worker() - API web | MDN :

    type : un DOMString que especifica el tipo de trabajador que se va a crear. El valor puede ser classic o module . Si no se especifica, el valor predeterminado utilizado es classic .

  2. de los trabajadores | manuales | Deno :

    Actualmente, Deno solo admite trabajadores de tipo module ; por lo tanto, es esencial pasar el type: "module" al crear un nuevo trabajador.

Para su caso de uso, es posible que pueda usar una URL de datos . p.ej:

 new Worker( `data:text/javascript;base64,${btoa( `console.log("hello world"); self.close();` )}`, { type: "module" } );
about 4 years ago · Juan Pablo Isaza Report

0

La información provista en la respuesta de mfulton26 es correcta, pero no necesita una URL de datos: simplemente necesita agregar { type: "module" } a las opciones de instanciación de su trabajador. Deno incluso admite TypeScript como fuente para su trabajador:

blob-worker.ts :

 const workerModuleSource = ` const version: string = Deno.version.deno; console.log(\`Hello from Deno v\${version}\`); self.close(); `; const blob = new Blob( [workerModuleSource], {type: 'application/typescript'}, ); const objUrl = URL.createObjectURL(blob); const worker = new Worker(objUrl, { deno: true, type: 'module', }); URL.revokeObjectURL(objUrl);
 $ deno run --unstable blob-worker.ts Hello from Deno v1.14.1
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!